home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / misc / FlexCat_Demos.lha / FlexCat_Demos / Sources / HSPascal / HelloWorldLocale.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-18  |  3.6 KB  |  186 lines

  1. UNIT HelloWorldLocale;
  2. INTERFACE
  3.  
  4. {****************************************************
  5.  
  6. This file was created automatically by 'FlexCat 2.3'
  7. from "HelloWorld.cd".
  8.  
  9. Do NOT edit by hand!
  10.  
  11. ****************************************************}
  12.  
  13. USES
  14.   Exec , Locale , Utility ;
  15.  
  16. CONST
  17.   MSG_HELLO = 0 ;
  18.   MSG_HELLO_STR = 'HELLO WORLD!'#0;
  19.  
  20.   MSG_BYE = 1 ;
  21.   MSG_BYE_STR = 'BYE!'#0;
  22.  
  23.  
  24. PROCEDURE CloseCatalog;
  25.  
  26. PROCEDURE OpenCatalog(loc : pLocale ; language : STRPTR ) ;
  27.  
  28. FUNCTION GetString(num : LONGINT) : STRPTR ;
  29.  
  30. FUNCTION GetPasString(num : LONGINT) : STRING;
  31.  
  32. IMPLEMENTATION 
  33.  
  34. CONST
  35.   builtinlanguage = 'english'#0;
  36.   version = 0 ;
  37.   catalog  : pCatalog = NIL ;
  38.  
  39. VAR
  40.  
  41.   OldExitProc : Pointer;
  42.  
  43. TYPE
  44.  
  45.   tAppString = RECORD
  46.      id  : LONGINT ;
  47.      str : STRPTR ;
  48.   END ;
  49.  
  50.   tAppStringArray = ARRAY [0..2] OF tAppString ;
  51.  
  52. CONST
  53.   AppStrings : tAppStringArray = (( id : 0 ; str : NIL ));  
  54.  
  55. FUNCTION CPtr( s : string ):pointer;INLINE
  56.   $201F, { move.l (a7)+,d0 ; get address string }
  57.   $5280, { addq.l #1,d0    ; ignore counter }
  58.   $2E80; { move.l d0,(a7)  ; return "C-string" address }
  59.  
  60. PROCEDURE CloseCatalog;
  61. BEGIN
  62.   IF catalog <> NIL THEN
  63.     BEGIN
  64.       Locale.CloseCatalog(catalog) ;
  65.       catalog := NIL
  66.     END;
  67. END; 
  68.  
  69. PROCEDURE InitAppStringsArray;
  70. BEGIN
  71.   AppStrings[0].id := MSG_HELLO;
  72.   AppStrings[0].str := CPtr(MSG_HELLO_STR);
  73.  
  74.   AppStrings[1].id := MSG_BYE;
  75.   AppStrings[1].str := CPtr(MSG_BYE_STR);
  76.  
  77. END;
  78.  
  79. PROCEDURE OpenCatalog(loc : pLocale ; language : STRPTR );
  80. VAR
  81.    tags   : ARRAY [0..7] OF LONGINT ;
  82. BEGIN
  83.   CloseCatalog;
  84.   IF (catalog = NIL) AND (LocaleBase <> NIL) THEN
  85.     BEGIN
  86.       IF language <> NIL THEN
  87.         BEGIN
  88.           tags[0] := OC_BuiltInLanguage; tags[1] := long(CPtr(builtinlanguage));
  89.           tags[2] := OC_Language ;       tags[3] := long(language); 
  90.           tags[4] := OC_Version ;        tags[5] := version;
  91.           tags[6] := TAG_END;
  92.         END
  93.       ELSE
  94.         BEGIN
  95.           tags[0] := OC_BuiltInLanguage; tags[1] := long(CPtr(builtinlanguage));
  96.           tags[2] := OC_Version ;        tags[3] := version;
  97.           tags[4] := TAG_END;
  98.         END;
  99.     catalog := Locale.OpenCatalogA(loc, CPtr('HelloWorld.catalog'#0), @tags) ;
  100.     END 
  101. END;
  102.  
  103. FUNCTION GetString(num : LONGINT) : STRPTR ;
  104.  
  105. VAR
  106.   i       : LONGINT ;
  107.   default : STRPTR ;
  108.  
  109. BEGIN
  110.   i := 0 ;
  111.  
  112.   WHILE (i < 2) AND (AppStrings[i].id <> num) DO
  113.   BEGIN
  114.     INC(i)
  115.   END ;
  116.  
  117.   IF i <> 2 THEN
  118.     default := AppStrings[i].str
  119.    ELSE
  120.     default := NIL ;
  121.  
  122.   IF catalog <> NIL THEN
  123.     GetString := Locale.GetCatalogStr(catalog, num, default)
  124.    ELSE
  125.     GetString := default
  126. END;
  127.  
  128. FUNCTION GetPasString(num : LONGINT) : STRING;
  129. TYPE
  130.   pa = ^ta;
  131.   ta = PACKED ARRAY [0..MAXINT] OF CHAR;
  132. VAR
  133.   i    : INTEGER;
  134.   sptr : pa;
  135.   s    : STRING;
  136. BEGIN
  137.   sptr := pa(GetString( num ));
  138.   s := '';
  139.   i := 0;
  140.   WHILE sptr^[i] <> #0 DO 
  141.   BEGIN
  142.     s := s + sptr^[i];
  143.     INC(i)
  144.   END;
  145.   GetPasString := s
  146. END;
  147.  
  148. (***************************************************************************)
  149. (*                  << INIT AND EXIT PROCEDURE  >>                         *)
  150. (***************************************************************************)
  151.  
  152. PROCEDURE InitFunction;
  153. BEGIN
  154.   LocaleBase := OpenLibrary( 'locale.library' , 38 );
  155.   if LocaleBase = NIL then 
  156.     BEGIN
  157.       WRITELN( '*** ERROR *** locale.library ' );
  158.       HALT
  159.     END;
  160.   InitAppStringsArray;
  161.   OpenCatalog( NIL , NIL );
  162. END;
  163.  
  164. PROCEDURE ExitFunction;
  165. BEGIN
  166.   if LocaleBase <> NIL then CloseLibrary( LocaleBase );
  167.   CloseCatalog;
  168. END;
  169.  
  170. PROCEDURE ExitHandler;
  171. BEGIN
  172.   ExitProc := OldExitProc;
  173.   ExitFunction;
  174. END;
  175.  
  176. PROCEDURE Initialize;
  177. BEGIN
  178.   OldExitProc := ExitProc;
  179.   ExitProc := @ExitHandler;
  180.   InitFunction;
  181. END;
  182.  
  183. BEGIN
  184.   Initialize;
  185. END.
  186.